package com.edu.d8_tcp5;

import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.*;

/**
 * TCP通信，服务端，使用线程池进行优化·
 */
public class Server {

    public static void main(String[] args) throws Exception {
        System.out.println("服务端启动成功！~！！！！！");
        /**
         *1、创建ServerSocket的对象，同时为服务端注册端口。
         */
        ServerSocket serverSocket = new ServerSocket(8080);

        ThreadPoolExecutor pool=new ThreadPoolExecutor(16,18,1000, TimeUnit.SECONDS,
                new ArrayBlockingQueue<>(8), Executors.defaultThreadFactory(),new ThreadPoolExecutor.AbortPolicy());
        /**
         * 2、使用serverSocket对象，调用一个accept方法，等待客户的连接请求,也就是说，客户端的socket与服务端的这个socket打通了一个通道
         */
        while (true) {
            Socket socket = serverSocket.accept();

            //将通信管道，交给线程去管理。
            pool.execute(new ServerReaderRunable(socket));
        }
    }

}
